package filter

import (
	"fmt"
	"strconv"
	"time"

	. "TaylorTest/app"
)

/**
IFilter接口是一个中间接口类，定义了所有的过滤器应该实现的方法OnEntry和OnExist方法

Filter是一个基础结构体，提供了过滤器的通用功能，但默认不执行任何操作，可以被其他过滤器（如LogFilter）嵌入，以便复用或覆盖这些方法。

LogFilter通过嵌入Filter继承了这些方法，并可以覆盖它们以实现自定义逻辑。
*/

// 日志中间件
type LogFilter struct {
	Filter
}

func (filter *LogFilter) OnExist(ctx *Context) {
	ontryTime := ctx.StartTime
	existTime := time.Now()
	duration := existTime.Sub(ontryTime)
	//记录访问日志
	//	app.InfoLog.Info(ctx.Request.URL, " "+strconv.FormatInt(duration.Nanoseconds()/1000/1000, 10)+"ms")
	//这里先简单打印出来就好了
	fmt.Println(ctx.Request.URL, " "+strconv.FormatInt(duration.Nanoseconds()/1000/1000, 10)+"ms")
}
